<?php

class CarreraController extends Zend_Controller_Action{

    public function init(){
        X\Permiso::paraController();
        $this->em = Zend_Registry::getInstance()->entitymanager;
    }

    public function indexAction(){

        $departamentos = $this->em->createQueryBuilder()
                                  ->select    ('d.idDepartamento')
                                  ->addselect ('d.nombre')
                                  ->from      ('Default_Model_Departamento', 'd')
                                  ->where     ('d.permiteCarreras = TRUE')
                                  ->orderBy   ('d.nombre', 'asc')
                                  ->getQuery  ()
                                  ->execute   ();

        $this->view->departamentos = Zend_Json::encode(Array(
            "success" => true,
            "total"   => count($departamentos),
            "rows"    => $departamentos
        ));

    }

    public function ajaxCrearAction(){

        $codigoDepartamento  = $this->_request->getPost('departamento' );
        $nombre              = $this->_request->getPost('nombre'       );
        $codigo              = $this->_request->getPost('codigo'       );
        $duracion            = $this->_request->getPost('duracion'     );

        $departamento = $this->em->find('Default_Model_Departamento', $codigoDepartamento);

        // query
        $existeNombre = $this->em->createQueryBuilder()
                                 ->select   ('count(c.nombre)')
                                 ->from     ('Default_Model_Carrera', 'c')
                                 ->where    ("c.nombre='".pg_escape_string($nombre)."'")
                                 ->getQuery ()
                                 ->getSingleScalarResult();

        $existeCodigo = $this->em->createQueryBuilder()
                                 ->select   ('count(c.codigo)')
                                 ->from     ('Default_Model_Carrera', 'c')
                                 ->where    ("c.codigo='".pg_escape_string($codigo)."'")
                                 ->getQuery ()
                                 ->getSingleScalarResult();

        // check
        if ($existeNombre > 0)
            throw new Exception('Ya existe una carrera con este nombre.');

        if ($existeCodigo > 0)
            throw new Exception('Ya existe una carrera con este código.');

        // crear
            // obtener
            // instanciar
            $carrera = new Default_Model_Carrera;
            // cargar
            $carrera->setDepartamento ($departamento);
            $carrera->setNombre       ($nombre);
            $carrera->setCodigo       ($codigo);
            $carrera->setDuracion     ($duracion);

            //var_dump($carrera);return;
            // guardar
            $this->em->persist($carrera);
            $this->em->flush();
            
        // json
        X\Msg::Success('La carrera se ha cargado exitosamente.');

    }


}

